Conventional techniques for streaming video games includes executing game software on a remote cloud machine and delivering a video of the game to an end user at a client machine. The client machine processes the end user's game control input, and sends the game control input back to the cloud server. The cloud server then processes the game control input, and renders an updated frame that is delivered back to the client machine, where it is displayed to the end user. As a result, the end user does not see their input take effect on their screen until a full round-trip to the cloud server has been made, and the new frame has been rendered. This results in undesirable control latency, which affects the user's enjoyment of playing the game. Additionally, streaming high frame rate video can be expensive in terms of bandwidth and server costs. Therefore, it is desirable to stream a game with low control latency and at a reduced bandwidth.